前言:
建立微服務
- 如何建立微服務先撇出不使用Istio建立起一個基本需要有幾個要素,以下會做個簡單範例:
- 第一個,需要有服務也就是所謂的pod
- 第二個,service因為在K8S世界中要讀取服務(pod)一定要透過Service的方式
- 第三個,ingress算是一個類似nginx的轉導router,用ingress方式設定網址綁定憑證(在GCP中若使用ingress防火牆規則將不受限制需要透過cloud armor去阻擋)
Deployment(Pod)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Service
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: "test.com"
http:
paths:
- pathType: Prefix
path: "/nginx"
backend:
service:
name: nginx
port:
number: 80
- 服務如何部署至建立起的運作
- 在K8S世界中所有服務流程都是透過YAML,不得不說很多時候自己比較像是YAML工程師,這裡建議可以使用Helm若需要管理部署可以有很大的幫助,畢竟大量的YAML是非常眼花撩亂的
- 然而服務的建立也需要有相對應的image當你本機建立起dockerfile build image只需要在GCP上開立一個私倉push image放至對應服務image並且標上tag就可以很簡單的切換服務版本,這在更版上也是非常的便利。
結語:
- 今天介紹GCP K8S如何用最簡單的最低標準方式建立起一個服務並切運行換版,雖然這篇較與Istio沒相關但也是建立起整個服務上很重要的基礎。